﻿#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include<stdio.h>


	//1、 什么是大小端 ? 写代码验证大小端存储问题
//大端（存储）模式：是指数据的低位字节内容保存在内存的⾼地址处，⽽数据的⾼位字节内容，保存
//在内存的低地址处。
//小端（存储）模式：是指数据的低位字节内容保存在内存的低地址处，⽽数据的⾼位字节内容，保存
//在内存的高地址处。
// 找到低地址上的数看是小端还是大端
//思路1：共用体
//typedef union data
//{
//	int a;
//	char b[4];
//}DATA;
//int main()
//{
//	DATA d;
//	d.a = 0x12345678;//小端0x78 大端0x12
//	//printf("%x",d.b [0]);
//	if (d.b[0] == 0x78)
//	{
//		printf("小端");
//	}
//	else
//	{
//		printf("大端");
//	}
//}
//思路2：指针
//int main()
//{
//	int s = 0x12345678;
//	char* ch = &s;
//	//printf("%x",*ch);
//	if (*ch == 0x78)
//	{
//		printf("小端");
//	}
//	else
//	{
//		printf("大端");
//	}
//}
//2、实现大小端数据的转换
//思路：翻转高低地址
//int main()
//{
//	int a = 0x12345678;
//	printf("翻转前：%#x\n",a);
//	a = (a & 0x00000078) << 24 | (a & 0x00005600) << 8 | (a & 0x00340000) >> 8 | (a & 0x12000000) >> 24;
//	printf("翻转后：%#x",a);
//}
//typedef struct
//{
//    long i;
//    int k[6];
//    char c;
//}DATA;
//
//struct data
//{
//    int cat;
//    DATA cow;
//    double dog;
//}too;
//DATA max;
//int main()
//{
//    printf("%zu\n", sizeof(struct data) + sizeof(max));
//}
//冒泡排序
//int main()
//{
//	int arr[10] = {10,9,8,7,6,5,4,3,2,1};
//	int len = sizeof(arr) / sizeof(arr[0]);
//	int lun = len - 1;
//	int i, j, temp;
//	for (i = 0; i < lun; i++)
//	{
//		for (j = 0; j < len - i - 1; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				temp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = temp;
//			}
//		}
//	}
//	for (j = 0; j < len; j++)
//	{
//		printf("%d ", arr[j]);
//	}
//}
//二分查找
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int len = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = len - 1;
	int key,mid;
	printf("输入你要查找的数字：");
	scanf("%d",&key);
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] == key)
		{
			printf("找到了，它的下标是%d",mid);
			break;
		}
		else if (arr[mid] > key)
		{
			right--;
		}
		else
		{
			left++;
		}	
	}
	if (left > right)
	{
		printf("找不到");
	}
}
